289577660c55a80baada1ca397c10af980464f9f,src/main/java/com/cronutils/model/time/ExecutionTime.java,ExecutionTime,previousClosestMatch,#DateTime#,233
Before Change
nearestValue = days.getPreviousValue(highestDay, 1);
if(nearestValue.getShifts()>0){
newDate = new DateTime(previousYear, highestMonth, 1, 23, 59, 59, date.getZone())
.minusMonths(nearestValue.getShifts()).dayOfMonth().withMaximumValue();
return previousClosestMatch(newDate);
}else{
highestDay = nearestValue.getValue();
After Change
nearestValue = days.getPreviousValue(highestDay, 1);
if(nearestValue.getShifts()>0){
newDate = ZonedDateTime.of(LocalDateTime.of(previousYear, highestMonth, 1, 23, 59, 59), ZoneId.systemDefault())
.minusMonths(nearestValue.getShifts()).with(lastDayOfMonth());
return previousClosestMatch(newDate);
}else{
highestDay = nearestValue.getValue();